import 'package:flutter/material.dart';
import 'package:flutter_base_kit/home/video/controller/video_detail_controller.dart';
import 'package:flutter_base_kit/utils/log_util.dart';
import 'package:get/get.dart';
import 'package:video_player/video_player.dart';

///代码清单12-10  视频列表页面使用控制咕噜
class VideoListController extends GetxController {

  //当前播放视频的控制器
  VideoPlayerController? videoPlayerController;
  //播放视频对应的 GetxController 的Tag
  String? videoTag;
  //停止上一个播放视频
  Future<bool> stopGlobalVideo([bool destroy=false]) async {
    if (videoPlayerController != null) {
      //校验控制是否已注册
      if (Get.isRegistered<VideoDetailController>(tag: videoTag)) {
        //获取控制器 通过Tag
        VideoDetailController detailController =
            Get.find<VideoDetailController>(tag: videoTag);
        videoTag = null;
        //停止视频播放
        detailController.pause(destroy);
        //销毁释放
        await videoPlayerController!.dispose();
        return true;
      }
    }
    return false;
  }

  //视频开始播放时记录当前正在播放的 播放控制器
  void updateVideoController(event, tag) {
    //视频组件播放使用的控制器
    videoPlayerController = event;
    //列表中正在播放视频的 Item 对应 tag
    videoTag = tag;
  }

  //列表滑动时实时回调校验
  void checkBorderLimit(int firstIndex, int lastIndex) {
    if (videoTag != null) {
      LogUtil.e("videoTag $videoTag");
      int index = int.parse(videoTag!);
      if (index >= firstIndex && index <= lastIndex) {
        //停止播放 销毁播放控制器 不更新页面显示
        stopGlobalVideo(true);
      }
    }
  }

  @override
  void onReady() {
    // TODO: implement onReady
    super.onReady();
  }
}
